package com.my.ruyi.exception;

import javax.servlet.http.HttpServletRequest;

import org.springframework.ui.Model;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.ModelAttribute;

/*
 * @ControllerAdvice注解被@Component标注了，所以当时用
 * <context:component-scan>标签的时候，也会扫描到此注解的类
 */

@ControllerAdvice
public class GlobalDefaultExceptionHandler {

	/**
	 * 全局异常处理
	 * ，@ControllerAdvice注解
	 * 可以用于定义@ExceptionHandler、@InitBinder、@ModelAttribute，
	 * 并应用到所有@RequestMapping中
	 * @param req
	 * @param e
	 */
	@ExceptionHandler(value = Exception.class)
	public void defaultErrorHandler(HttpServletRequest req, Exception e) {
		
		e.printStackTrace();
	}
	
	/**
	 * 应用到所有@RequestMapping注解方法，在其执行之前初始化数据绑定器
	 * @param binder
	 */
	@InitBinder
	public void initBinder(WebDataBinder binder) {
		
	}
	
	/**
	 * 把值绑定到Model中，使全局@RequestMapping可以获取到该值
	 */
	@ModelAttribute
	public void modelAttr(Model model) {
		
	}
}
